/*
 * seqFeederList.h
 *
 *  Created on: 2011-09-05
 *      Author: pawel
 */

#ifndef SEQFEEDERLIST_H_
#define SEQFEEDERLIST_H_
#include"seqFeederV.h"
//#include<ext/slist>
#include<list>

namespace bpp{
class BasicSequence;
}
/*
 * Class impelments producer consumer buffer
 * buffer contains pointers to sequence objects
 */
class seqFeederList :public seqFeeder{
private:
	/*
	 * list of pointers to sequences
	 */
//	__gnu_cxx::slist<bpp::BasicSequence*> seqList;
	std::list<bpp::BasicSequence*> seqList;
	/*
	 * Maximal size of list
	 */
	size_t listSize;
public:
	/*
	 * Maximum list size is set to
	 * slist.maxi_size
	 */
	seqFeederList();
	/*
	 * Create buffer with max list size t
	 * @param t max size of list
	 */
	seqFeederList(size_t);
	/*
	 * Destructor delete all pointers in list
	 */
	~seqFeederList();
	/*
	 * get sequence object pointer
	 */
	bpp::BasicSequence* getSeq();
	/*
	 *Push sequence to buffer
	 *@param seq is pointer to sequence object
	 */
	void pushSeq(bpp::BasicSequence* seq);
	void pushAddParams(seqAlignParams *params, std::string seqName);
	seqAlignParams* getAddParam(std::string seqName);
};

#endif /* SEQFEEDERLIST_H_ */
